%% main.tex --- файл-обертка для диплома

\documentclass[russian,utf8,simple,floatsection]{eskdtext} 

\include{defs}  % вставляем содержимое служебных инструкций из defs.tex

\ESKDcolumnII{\small{Тестирование на модельных и реальных примерах}}
\setcounter{section}{4}
\begin{document}
\section{Тестирование на модельных и реальных примерах.}
\subsection{Описание и анализ исключительных ситуаций}

При написании программного продукта для перехвата исключительных
ситуаций использовался механизм исключений языка Python.

Обработка исключений поддерживается в Python посредством операторов
try, except, else, finally, raise, образующих блок обработки
исключения. В общем случае блок выглядит следующим образом:

\begin{lstlisting}[language=python]
try:
    raise ExceptionType("message")
except Var:
    action_one()
except Var2:
    raise 
else:
    Other_action()
finally:
    final_code()
\end{lstlisting}

Все исключения обрабатываются программой самостоятельно. Если
открываемая база данных пуста, то выдается сообщение об ошибке, как на
рисунке~\ref{errorMessage}.

\begin{figure}[!hb]
  \centering
  \includegraphics[angle=0, width=0.5\textwidth]{ErrorMessage}
  \caption{Сообщение об ошибке.}
  \label{errorMessage}
\end{figure}

\subsection{Исследование временных характеристик}

Тестирование временных характеристик проводилось на множестве данных
мощностью 10,50,100,200. Результат приведены в таблице~\ref{speed}.

\begin{table}[!h]
  \caption{Временные характеристики программы}
  \centering
  \begin{tabular}{|c|c|c|}
    \hline
    Мощность данных&Точность&Время работы
    \\ \hline
    10&3\%&0.350 сек
    \\ \hline
    50&3.4\%&3.650 сек
    \\ \hline
    100&2.3\%&7.50 сек
    \\ \hline
    200&2.0\%&20 сек
    \\ \hline
  \end{tabular}
  \label{speed}
\end{table}

Из таблицы видно, что время работы зависит от размерности данных не
линейно. Для увеличения скорости работы можно предпринять один из
следующих шагов:

\begin{enumerate}
\item Использовать JIT-компилятор pyrex;
\item Переписать часто-вызываемые функции на C;
\item Переписать часто-вызываемые функции на Pyrex;
\item Использовать реализацию IronPython, что даст выигрыш на
  windows и linux машинах за счет использования инфраструктуры .NET.
\end{enumerate}

В данной работе использовался второй подход. Были переписаны функции
расчета фитнесса, оператор мутации и оператор скрещивания. Новые
временные характеристики приведены в таблице~\ref{speed2}.

\begin{table}[!h]
  \caption{Измененные временные характеристики программы}
  \centering
  \begin{tabular}{|c|c|c|}
    \hline
    Мощность данных&Точность&Время работы
    \\ \hline
    10&3.1\%&0.150 сек
    \\ \hline
    50&3.3\%&2.320 сек
    \\ \hline
    100&2.2\%&4.10 сек
    \\ \hline
    200&2.3\%&8 сек
    \\ \hline
  \end{tabular}
  \label{speed2}
\end{table}

Как видно из таблицы, скорость работы выросла почти в 2 раза.

\subsection{Описание функционирования}
Основное окно программы, изображенное на рисунке~\ref{mainWindow},
состоит из меню и таблицы. С помощью команды
Файл$\longrightarrow$Загрузить~данные вызывается диалог выбора файла с
базой данных. Также возможна загрузка экспериментальных данных из CSV
файлов.

Программа, также, поддерживает загрузку данных из CSV файлов.
CSV (от англ. Comma Separated Values — значения, разделённые запятыми)
— это текстовый формат, предназначенный для представления табличных
данных. Каждая строка файла — это одна строка таблицы. Значения
отдельных колонок разделяются разделительным символом (delimiter) —
запятая (,) или точка с запятой (;). Используемый символ разделителя
зависит от установленной в системе локали. В США это запятая, а в
России — точка с запятой, так как запятая используется для дробных
чисел (в отличие от США, где это точка). Значения, содержащие
зарезервированные символы, такие как: запятая, точка с запятой или
новая строка обрамляются символом двойные кавычки ("); если в значении
встречаются кавычки — они представляются в файле в виде двух кавычек
подряд. Строки разделяются парой символов CR LF (0x0D 0x0A) (в DOS и
Windows эта пара генерируется нажатием клавиши Enter).

\begin{figure}[!ht]
  \centering
  \includegraphics[angle=0, width=\textwidth]{MainWindow}
  \caption{Главное окно программы.}
  \label{mainWindow}
\end{figure}

Таблицу с данными(рисунок ~\ref{mainWindowFull}) можно
редактировать. Данные автоматически сохраняются при редактировании.

\begin{figure}[!ht]
  \centering
  \includegraphics[angle=0, width=0.7\textwidth]{MainWindowLoaded}
  \caption{Главное окно программы с загруженными данными.}
  \label{mainWindowFull}
\end{figure}

\begin{figure}[!ht]
  \centering
  \includegraphics[angle=0, width=\textwidth]{AnaliseEmpty}
  \caption{Диалог настройки запуска алгоритма.}
  \label{db}
\end{figure}

С помощью меню Анализ$\longrightarrow$Построить запускается диалог
запуска анализа(Рисунок~\ref{AnaliseEmpty}). В данном диалоге можно
Выставить размер популяции, вероятность мутации хромосомы, величину
мутации, а также ограничить максимальное количество правил. Пример
настройки диалога можно увидеть на рисунке~\ref{Analise}.

\begin{figure}[!ht]
  \centering
  \includegraphics[angle=0, width=\textwidth]{Analise}
  \caption{Диалог настройки запуска алгоритма с заполненными данными.}
  \label{Analise}
\end{figure}

После нажатия на кнопку <<Ok>> запускается ГА. Процесс подбора можно
видеть на рисунке~\ref{Progress}.

\begin{figure}[!ht]
  \centering
  \includegraphics[angle=0, width=\textwidth]{Progress}
  \caption{Окно с отображением прогресса подбора нечеткой модели.}
  \label{Progress}
\end{figure}

Функции принадлежность можно корректировать и просматривать в диалоге
Анализ$\longrightarrow$Функции~принадлежности. 

\begin{figure}[!ht]
  \centering
  \includegraphics[angle=0, width=\textwidth]{CreateFunction}
  \caption{Диалог создания функции принадлежности.}
  \label{CreateFunction}
\end{figure}

После настройки ГА, база правил сохраняется в БД, после чего можно
аппроксимировать данные. Диалог аппроксимации вызывается в меню
Анализ$\longrightarrow$Аппроксимация. Выбирается файл с данными, и по
ним строется график. График изображен на рисунке~\ref{Graphic}.

\begin{figure}[!ht]
  \centering
  \includegraphics[angle=0, width=\textwidth]{Graphic}
  \caption{Результат аппрокимации данных.}
  \label{Graphic}
\end{figure}
\clearpage
\end{document}
